#ifndef TERMSANDMATERIALS_H
#define TERMSANDMATERIALS_H

#include <QWidget>
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>

#include "../../mainWindow/defines.h"
#include "../cellEdit/cellEdit.h"

class TermsAndMaterials : public QWidget {
 Q_OBJECT
public:
  TermsAndMaterials(QWidget *parent = 0);

//Регулирование cellEdit
  int valueIntSpin(int nameCell);
  void setValueIntSpin(int newVal, int nameCell);

  double valueDoubleSpin(int nameCell);
  void setValueDoubleSpin(double newVal, int nameCell);

  QString textLabel(int nameCell);
  void setTextLabel(const QString & str, int nameCell);

  QString addStr(int nameCell);
  void setAddStr(const QString & str, int nameCell);

  void setLabelView(int nameCell);
  void setEditorView(int nameCell);

  void setAllLabelView();

  void setConcrete(const QString & str);

public slots:
  void genIntMessage(const QString & var, int num, const QString & addStr);
  void genDoubleMessage(const QString & var, double num, const QString & addStr);
  void genStrMessage(const QString & var, const QString & num, const QString & addStr);

  void genIntMessageN(int num)       { genIntMessage("<b>n =</b> ", num, ""); };
  void genDoubleMessageN(double num);

  void genIntMessageRegion(int num);

  void genIntMessageP(int num)       { genIntMessage("<b>P =</b> ", num, " </i>лет</i>"); };
  void genDoubleMessageP(double num) { genDoubleMessage("<b>P =</b> ", num, " <i>лет</i>"); };

  void genIntMessageQ20(int num);
  void genDoubleMessageQ20(double num) { genDoubleMessage("<b>q<sub>20</sub> =</b> ", num, " <i>л/с на га</i>"); };

  void genIntMessageZmid(int num)       { genIntMessage("<b>Z<sub>mid</sub> =</b> ", num, ""); };
  void genDoubleMessageZmid(double num); 

  void genIntMessageT(int num)       { genIntMessage("<b>t<sub>r</sub> =</b> ", num, " <i>мин</i>"); };
  void genDoubleMessageT(double num) { genDoubleMessage("<b>t<sub>r</sub> =</b> ", num, " <i>мин</i>"); };

protected:

//Метки
  /* QLabel * nameParamTray; */
   QLabel * nameN;
   QLabel * nameConcrete;
  /* QLabel * nameRainWater; */
   QLabel * nameRegion;
   QLabel * nameQ20;
   QLabel * nameP;
   QLabel * nameZmid;
   QLabel * nameT;

//Элементы для varTable
  CellEdit * editN;
  CellEdit * editConcrete;
  CellEdit * editRegion;
  CellEdit * editP;
  CellEdit * editQ20;
  CellEdit * editZmid;
  CellEdit * editT;

//Сетка размещения
  // QHBoxLayout * layoutN;
  // QHBoxLayout * layoutConcrete;
  // QVBoxLayout * vLayout_N_Concrete;

//Конвертирование кодировки
  QTextCodec * russianCodec;

  void mousePressEvent(QMouseEvent *event);
  void keyPressEvent(QKeyEvent * event);

  //Убирает незначащие цифры после запятой
  double toPrec(double num) { double d = fmod(num, 0.01); return  num - d + double(rint(d * 1000))/1000; };

signals:
  //Вызов на создание Диалога выбора облицовки
  void callDConcrete();
  //Вызов на создание Диалога выбора региона
  void callDRegion();
  //Вызов на создание Диалога карты
  void callDMap();
  //Вызов на создание Диалога выбора типа поверхности
  void callDTypeUpside();
  //Вызов на создание Диалога выбора класса бетона
  void callDClConcrete();
  //Вызов на пересчет с новым N
  void callCalcWithNewN(double newVal);
  //Вызов на пересчет с новым регионом
  void callCalcWithNewRegion(int newVal);
  //Вызов на пересчет с новым P
  void callCalcWithNewP(double newVal);
  //Вызов на пересчет с новым I
  void callCalcWithNewI(double newVal);
  //Вызов на пересчет с новым F
  void callCalcWithNewF(double newVal);
  //Вызов на пересчет с новым Q20
  void callCalcWithNewQ20(int newVal);
  //Вызов на пересчет с новым коэфициентом стока
  void callCalcWithNewRunnel(double newVal);
  //Вызов на пересчет с новым временем
  void callCalcWithNewTime(int newVal);
  //Вызов на пересчет с новым Ir
  void callCalcWithNewIr(double newVal);
  //Вызов на пересчет с новым Hr
  void callCalcWithNewHr(double newVal);
  //Вызов на пересчет с новым классом бетона
  void callCalcWithNewClConcrete(int newVal);
  //Уведомление
  void newMessage(QString text);
  //Вызов обновления класса бетона
  void callUpdateConcrete(int num);

}; //class TermsAndMaterials : public QGraphicsView

#endif
